/*
1. 组件通讯
pubsub-js

发布: PubSub.publish('话题',数据)
订阅: PubSub.subscribe('话题', (话题,数据)=>{

})

清除订阅: 

PubSub.unsubscribe(订阅的id)
PubSub.unsubscribe(话题)
PubSub.clearAllSubscripations(话题)



2. 常用生命周期钩子

挂载阶段
componentDinMount  订阅,设置定时器,发送请求
更新阶段  触发条件: 1. 父组件更新  2. setState 3. forceUpdate
componentDidUpdate  不要直接调用setState
卸载阶段
componentWillUnmount  清除操作

3. Fragment
可以作为jsx的根标签,但是不渲染任何的结构

4. 性能优化

shouldComponentUpdate
执行阶段: 更新阶段
形参: nextProps, nextState 新数据
返回值:  要求返回布尔值.  返回true则组件更新,返回false则组件不更新

PureComponent

其实就是帮我们自动实现了shouldComponentUpdate. 注意: 只是浅层对比

5. React.forwardRef

函数组件本身不能写ref. 使用了React.forwardRef就可以在函数组件上写ref

可以把写在函数组件上ref指向的ref对象,传递到函数组件内部






*/
